package ManagedBeans;

import Librerias.Producto;
import Sesiones.SesionCarrito;
import java.io.Serializable;
import java.util.ArrayList;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

@Named(value = "managedBeanCarrito")
@SessionScoped
public class ManagedBeanCarrito implements Serializable {
    private int cantidad;
    private Producto producto;
    private int idU;
    private EntityManagerFactory emf = Persistence.createEntityManagerFactory("Tienda_slorenzoPU");
    private EntityManager em = emf.createEntityManager();
    SesionCarrito sc = new SesionCarrito();
    
    public ManagedBeanCarrito() {    }
    
    public int tamañoCarro(){
        return sc.numeroProductos();
    }
    
    public String añadirCarrito(int id){
        Producto p = em.find(Producto.class, id);
        sc.añadirProducto(p, cantidad);
        
        return "comprar";
    }            
    
    public int getCantidad() {
        return cantidad;
    }
    public int verCantidad(Producto p){
        return sc.getCantidad(p);
    }

    public void setCantidad(int cantidad) {
        System.out.println("Vamos a añadir #" + cantidad + "# Productos");
        this.cantidad = cantidad;
    }
    
    public int numeroProductos(){
        return sc.numeroProductos();
    }
    
    public void cancelarCompra(){
        sc.cancelar();
    }
    
    public Double totalCarrito(){
        return sc.totalCarrito();
    }
    
    public ArrayList<Producto> verCarrito(){
        return sc.getListaProductos();
    }
    
    public ArrayList<Integer> verCantidades(){
        return sc.getListaCantidades();
    }
    
    public boolean validaParametros(){
        return (FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id")!=null);
    }
    
    public void cargaInfo(){
        int idProd = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("producto"));
        this.setIdU(idProd);
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("Tienda_slorenzoPU");
        EntityManager em = emf.createEntityManager();
        Query q = em.createNamedQuery("Producto.findById");
        q.setParameter("id", idProd);
        Producto p = (Producto) q.getSingleResult();
        setProducto(p);
        em.close();
        emf.close();
    }

    public Producto getProducto() {
        return producto;
    }

    public void setProducto(Producto producto) {
        this.producto = producto;
    }

    public int getIdU() {
        return idU;
    }

    public void setIdU(int idU) {
        this.idU = idU;
    }
    
    public void eliminarProducto(Producto p){
        sc.eliminarProducto(p);
    }
    
    public String realizarCompra(){
        sc.realizarPedido();
        return "volver";
    }
}
